
// DO NOT EDIT THIS FILE - it is machine generated -*- c++ -*-

#ifndef __gnu_javax_sound_midi_dssi_DSSISynthesizer__
#define __gnu_javax_sound_midi_dssi_DSSISynthesizer__

#pragma interface

#include <java/lang/Object.h>
#include <gcj/array.h>

extern "Java"
{
  namespace gnu
  {
    namespace javax
    {
      namespace sound
      {
        namespace midi
        {
          namespace dssi
          {
              class DSSISynthesizer;
              class DSSISynthesizer$DSSISoundbank;
          }
        }
      }
    }
  }
  namespace javax
  {
    namespace sound
    {
      namespace midi
      {
          class Instrument;
          class MidiChannel;
          class MidiDevice$Info;
          class Patch;
          class Receiver;
          class Soundbank;
          class Transmitter;
          class VoiceStatus;
      }
    }
  }
}

class gnu::javax::sound::midi::dssi::DSSISynthesizer : public ::java::lang::Object
{

public: // actually package-private
  static void noteOn_(jlong, jint, jint, jint);
  static void noteOff_(jlong, jint, jint, jint);
  static void setPolyPressure_(jlong, jint, jint, jint);
  static jint getPolyPressure_(jlong, jint, jint);
  static void controlChange_(jlong, jint, jint, jint);
  static void open_(jlong);
  static void close_(jlong);
  static ::java::lang::String * getProgramName_(jlong, jint);
  static jint getProgramBank_(jlong, jint);
  static jint getProgramProgram_(jlong, jint);
  static void selectProgram_(jlong, jint, jint);
public:
  DSSISynthesizer(::javax::sound::midi::MidiDevice$Info *, ::java::lang::String *, jlong);
  virtual jint getMaxPolyphony();
  virtual jlong getLatency();
  virtual JArray< ::javax::sound::midi::MidiChannel * > * getChannels();
  virtual JArray< ::javax::sound::midi::VoiceStatus * > * getVoiceStatus();
  virtual jboolean isSoundbankSupported(::javax::sound::midi::Soundbank *);
  virtual jboolean loadInstrument(::javax::sound::midi::Instrument *);
  virtual void unloadInstrument(::javax::sound::midi::Instrument *);
  virtual jboolean remapInstrument(::javax::sound::midi::Instrument *, ::javax::sound::midi::Instrument *);
  virtual ::javax::sound::midi::Soundbank * getDefaultSoundbank();
  virtual JArray< ::javax::sound::midi::Instrument * > * getAvailableInstruments();
  virtual JArray< ::javax::sound::midi::Instrument * > * getLoadedInstruments();
  virtual jboolean loadAllInstruments(::javax::sound::midi::Soundbank *);
  virtual void unloadAllInstruments(::javax::sound::midi::Soundbank *);
  virtual jboolean loadInstruments(::javax::sound::midi::Soundbank *, JArray< ::javax::sound::midi::Patch * > *);
  virtual void unloadInstruments(::javax::sound::midi::Soundbank *, JArray< ::javax::sound::midi::Patch * > *);
  virtual ::javax::sound::midi::MidiDevice$Info * getDeviceInfo();
  virtual void open();
  virtual void close();
  virtual jboolean isOpen();
  virtual jlong getMicrosecondPosition();
  virtual jint getMaxReceivers();
  virtual jint getMaxTransmitters();
  virtual ::javax::sound::midi::Receiver * getReceiver();
  virtual ::javax::sound::midi::Transmitter * getTransmitter();
public: // actually package-private
  jlong __attribute__((aligned(__alignof__( ::java::lang::Object)))) sohandle;
  jlong handle;
private:
  ::javax::sound::midi::MidiDevice$Info * info;
public: // actually package-private
  JArray< ::javax::sound::midi::MidiChannel * > * channels;
  ::java::util::List * soundbanks;
  ::gnu::javax::sound::midi::dssi::DSSISynthesizer$DSSISoundbank * defaultSoundbank;
public:
  static ::java::lang::Class class$;
};

#endif // __gnu_javax_sound_midi_dssi_DSSISynthesizer__
